【摘要】基于人工或者脚本半自动化的交付方式及运维方式,部署维护时间成本高,交付效率低下、业务等待时间长、运维误操作风险高,明显不能满足业务快速增长和稳定运行的要求。快速交付和自动化运维的重要性越发突出。基础软件PaaS建设的指导思想是一切皆服务,利用PaaS理念将基础软件产品和技术能力服务化,提供完整的数据中心基础软件服务能力,最终实现基础软件运维模式从人工模式向智能模式的转型。本文详述了民生银行对基础软件PaaS的探索与实践,对相关行业具有参考意义。【作者】民生银行系统管理中心基础软件PaaS建设小组
1、项目背景随着民生银行业务的不断发展,目前我行数据中心运行着几百套生产系统,并且持续的有新系统上线以满足日益增长的业务需求。不同业务系统使用的基础软件如操作系统、数据库、中间件等也有所不同,即使采用了较为严格的品牌收敛和软件准入策略,目前需要管理和维护的基础软件仍然种类众多。同时,基础软件的运行环境也正在从物理主机逐渐转变为虚拟化主机、容器,使得基础软件部署场景更加复杂多样。另外,每套应用系统还有相应的开发、单元、集成、性能、版本等多套测试环境,数量上是生产环境的若干倍。原有的基于人工或者脚本半自动化的交付方式及运维方式,部署维护时间成本高,交付效率低下、业务等待时间长、运维误操作风险高,明显不能满足业务快速增长和稳定运行的要求。快速交付和自动化运维的重要性越发突出。
云计算是与信息技术、软件、网络相关的一种服务,这种计算资源共享池叫做“云”。云计算把许多计算资源集合起来,通过软件实现自动化管理,这些资源能够像商品一样被快速提供。云计算按服务类型分为:IaaS(基础设施即服务),PaaS(平台即服务),SaaS(软件即服务)。PaaS通俗地说就是底层平台的云化。在云计算时代,计算能力在云端而不是本地,将底层平台的能力以服务的方式提供在云端,这就是PaaS。我行于2018年启动基础软件PaaS建设项目。基础软件PaaS建设的指导思想是一切皆服务,利用PaaS理念将基础软件产品和技术能力服务化,提供完整的数据中心基础软件服务能力。基础软件PaaS建设的整体目标是与现有业务系统及现有工具类平台有效整合,实现基础软件在生产环境及测试环境的部署上线、弹性扩缩容、变更、巡检、回收下线等工作的自动化;实现基础软件资源展示、容量管理、性能管理、基础运维、问题管理等管理功能的集中化、可视化;减少运维人员直接登录目标服务器操作的比例,降低人力实施成本,提高资源交付效率;实现有效的性能管理和容量管理,提高资源利用率;提前发现基础软件潜在的问题、风险,提高由基础软件故障引起的生产问题的解决效率;实现基础软件运维模式从人工模式向智能模式的转型。从面向的用户来讲,主要面向行内基础软件资源申请人员、科技开发人员、应用运维人员、系统管理中心基础软件管理员。从支持的基础软件运行环境来讲,优先支持容器化运行环境,同时也支持物理机、虚拟机等多种运行环境。从平台自主可控维度来讲,采用的技术框架首选开源和行内自主可控的框架,前、后端分离,平台可扩展性要强,采用微服务思想将不同的功能模块构建成独立的服务,应用容器化,对外提供标准化的基础软件PaaS服务能力。从与我行现有工具平台集成的维度来讲,与我行数据中心现有工具和平台集成,持续提升数据中心统一运维能力,同时因地制宜,有效利用现有工具平台,避免重复造轮子。从支持的产品维度来讲,覆盖我行数据中心支持的主要基础软件,包括不限于操作系统、数据库、中间件、容器、Redis、Kafka、访问代理、分布式存储、NoSQL、大数据、分布式日志平台等。基础软件PaaS逻辑架构如下图所示,包括公共模块层、执行层、产品层、统一运维集成层、数据层、门户层等。公共模块层:对接行内统一身份认证平台实现行内用户的同步、管理;通过基于角色的访问控制实现用户的权限管理;通过对执行层的自动化执行引擎模块、容器执行管理模块、Kafka执行管理模块等进行封装对外提供流程执行服务接口;另外还包括批量处理、CMDB服务、资源管理、配置管理、操作审计、密码管理等基础功能模块。执行层:基于Ansible(一个能实现批量部署的开源自动化运维工具)实现了自动化执行引擎模块,能够实现批量远程命令执行,由此实现对依托于物理机、虚拟机运行环境的资源的自动化部署及管理;基于Kubernetes(简称K8S,一个开源的、用于管理云平台中多个主机上的容器化的应用)实现容器执行管理模块,能够对容器化资源进行管理;针对Kafka、大数据等专有集群,实现大数据执行管理模块、Kafka执行管理模块,能够对大数据集群、Kafka集群进行管理。产品层:以产品为导向,遵循基础软件PaaS统一规划,实现特定基础软件产品端到端的全生命周期管理。统一运维集成层:对接行内统一身份认证平台,实现用户登录验证及用户信息获取;对接CMDB实现应用系统、服务器信息获取,及基础软件信息的准实时推送;对接数据中心服务平台,实现测试环境基础软件标准化资源的自服务申请及生产环境部分基础软件产品的自动化部署实施;对接审计平台实现资源自动化审计纳管等。数据层:采用关系型数据库、NoSQL数据库、Elasticsearch等作为数据层存储介质。基础软件PaaS依托数据中心服务平台提供测试环境基础软件自服务申请。目前基础软件PaaS支持的标准化产品服务列表如下:上述标准化产品在测试环境满足特定的申请场景(如项目组申请的资源数小于等于限定值等,具体可参见内网confluence申请指南),可以不需要经过评估、审批环节,实现自服务申请。同时申请参数大大简化,提升了项目组资源申请效率。为避免资源浪费,提升资源利用率,测试环境自服务申请应按需申请,已申请的资源平台会定期统计资源使用情况,针对使用率低的资源,基础软件PaaS会启动资源回收流程。非标准产品或不满足免审批条件的标准产品需要经过资源评估、架构评估、系统管理中心领导审批后分配资源。交付效率无法保证,建议申请标准基础软件产品。相较于测试环境基础软件资源自服务申请流程,生产环境资源分配策略更加谨慎,流程要求更加严格,需要申请流程各个环节审批人的评估和审批。生产环境基础软件资源申请同样依托于数据中心服务平台,当流程流转到资源实施环节后,实施人员通过点击执行按钮,由数据中心服务平台调用基础软件PaaS提供的流程执行接口,自动化实施,分配资源。工单每个实施步骤可以由原来的几天缩短到小时级乃至分钟级,整个基础软件资源交付时间可以从一个变更周期有效缩短到3天以内。基础软件PaaS产品层之数据库PaaS:支持DB2、Oracle、MySQL等多种不同类型数据库,且具有分库分表架构下的逻辑库管理能力。纳管了我行上千套测试和生产环境数据库,为运维人员提供了统一的数据库运维管理功能。其中资源申请模块,提供了标准化数据库资源的自助申请,资源管理模块展示了数据库信息、状态、负载、容量等基本信息,性能管理模块从性能评分、工作负载、SQL、内存、缓冲区、IO、锁、日志、排序等多维度对数据库性能进行分析,容量管理模块可以查看数据库、表空间、大表的容量使用及增长情况,基础运维模块集合了常用的数据库运维操作,SQL审核模块在测试环境按照数据库开发规范对SQL进行审核,及时发现问题SQL,避免问题SQL上生产,元数据管理模块可查询数据库的元数据信息。基础软件PaaS产品层之容器PaaS:纳管了我行不同网络分区的多个K8S集群和镜像库。其中资源申请模块是租户申请容器资源的入口,包含帐号申请、K8S和镜像库资源申请、日志接入申请等。集群管理模块为容器管理员和租户提供集群范围资源的管理,镜像管理模块提供镜像库和镜像的管理,应用管理模块主要为租户提供K8S namespace内资源的管理,帐号授权管理模块为容器管理员提供租户授权管理。容器组历史模块提供容器迁移过程历史查询。基础软件PaaS产品层之Redis PaaS:提供了基于K8S的容器化Redis的自服务及管理能力。区别于之前基于物理机和虚拟机的运行环境,通过Redis PaaS申请的Redis实例均运行于容器环境。Redis PaaS支持单实例、多副本、集群三种架构的Redis。资源管理模块展示了Redis实例基础信息,实例详情中的命令曲线可以查看命令执行情况,实例拓扑可以查看Redis实例拓扑结构及主从关系,慢查询展示慢查询数量及详情。配置管理模块为管理员提供了配置Redis模板的功能,物理节点模块展示了Redis专属K8S集群物理节点信息。基础软件PaaS产品层之Kafka PaaS:支持Kafka 0.10.X和1.1.X两个版本,纳管了行内两套测试环境Kafka集群和主备两套生产环境Kafka集群。其中,资源申请模块提供了Kafka接入的自服务申请功能,多集群管理模块为管理员提供了Kafka多集群维护管理功能,Broker管理模块提供了Broker信息列表查询,批量重启、轮转重启等功能,Topic管理模块提供了Topic增、删、改、查及消息查询等功能,消费组管理提供了消费者信息查询,重置消费者offset等功能,Zookeeper管理模块提供了Kafka集群所依赖的Zookeeper的管理功能。基础软件PaaS产品层之访问代理PaaS:提供了基于Tesla gateway(我行自主研发的高性能轻量级代理网关)的访问代理自服务申请和管理能力。访问代理PaaS提供的访问代理基于容器化实现,主要用于代理转发,代替原来Apache的部分功能。代理访问类型分为入访和出访,支持的协议类型包括http和https。资源管理模块提供了访问代理基本信息展示,及访问代理实例的停止、下线、探活等基础操作。资源监控模块为管理员提供了K8S节点资源、访问代理端口资源使用情况的监控功能,端口配置为管理员提供了访问代理端口查询及分配等功能。目前基础软件PaaS项目一期建设已经开发完成并上线,达成了预期的目标:实现了基础软件部署安装流程的标准化,简化了部署参数,提升了基础软件申请效率;实现了部分基础软件部署实施的自动化,基础软件部署实施自动化覆盖率达到80%,部署平均时间降低到小时级,部署效率大幅提升,测试环境交付时间达到小时级,生产环境新系统上线平均交付时间由1个变更周期降低到3个工作日;基础软件管理员、应用运维人员需要直接登录服务器比例大幅降低。基础软件PaaS一期的上线运行,使我们向着智能化运维迈出了重要的一步。在此基础上,我们计划继续进行基础软件PaaS建设和探索,优化平台架构,实现应用容器化部署;完善公共模块层功能,增强配置信息更新模块,实现基础软件CMDB信息的准实时同步,完善自动化巡检模块、报表模块,实现所有产品的深度巡检报表、问题报表、资源统计报表等报表功能,节省人工生成报表成本;执行层优化自动化执行模块,进行参数标准化改造,执行引擎分布式改造;产品层纳管更多的基础软件产品,进一步提高基础软件自动化部署的覆盖度,目标达到95%以上,进一步提升基础软件资源交付效率;与数据中心服务平台的流程进一步融合,实现基础软件扩容、变更、巡检、下线等操作的自动化,使基础软件总体运维操作自动化覆盖率达到80%以上,进一步降低运维人员需要直接登录服务器的比例;继续与我行现有工具和平台集成融合,持续推动数据中心在自动化运维方面的结构调整及优化升级。我们相信,通过持续的系统建设,我们会为民生银行打造出一个标准化、自动化、平台化和智能化的运维体系。原题:民生银行基础软件PaaS探索与实践;首发于民生运维
觉得本文有用,请转发或点击“在看”,让更多同行看到
欢迎关注社区 “PaaS”技术主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难问题,与同行切磋交流。
地址:http://www.talkwithtrend.com/Topic/18885
*本公众号所发布内容仅代表作者观点,不代表社区立场